
#ifndef DBOHELPER_H_
#define DBOHELPER_H_

#include "Buffer.h"

namespace buf
{

enum DBOType
{
    DBOT_BASE = 1,      // XXX: 原数据
    DBOT_STR = 2,       // 使用std::string::size()测试是否空
    DBOT_VEC = 3,       // 使用std::vector<unsigned char>::size()测试是否空
    DBOT_BUFFER = 4,    // 使用Buffer::rsize()测试是否空
    DBOT_MAX
};

struct DBOMeta
{
    int type;
    bool isnull;
    bool isunsigned;
    unsigned long int size; // IN: size of container OUT: real size
    void* data;
};

struct DBO
{
    template <typename T>
    inline void push(T& v)
    {
        DBOMeta m;
        m.type = DBOT_BASE;
        m.isnull = 0;
        m.isunsigned = 0;
        m.size = sizeof(v);
        m.data = &v;
        _meta.push_back(m);
    }

    inline void push(std::string& v)
    {
        DBOMeta m;
        m.type = DBOT_STR;
        m.isnull = 0;
        m.isunsigned = 0;
        m.size = 0;
        m.data = &v;
        _meta.push_back(m);
    }

    inline void push(std::vector<unsigned char>& v)
    {
        DBOMeta m;
        m.type = DBOT_VEC;
        m.isnull = 0;
        m.isunsigned = 0;
        m.size = 0;
        m.data = &v;
        _meta.push_back(m);
    }

    inline void push(Buffer& v)
    {
        DBOMeta m;
        m.type = DBOT_BUFFER;
        m.isnull = 0;
        m.isunsigned = 0;
        m.size = 0;
        m.data = &v;
        _meta.push_back(m);
    }

    std::vector<DBOMeta> _meta;
};

#define DBOBEGIN(N) struct N : DBO { N() {
#define DBOCEND() }
#define DBOEND() }

#define DBOD0(T1,N1)
#define DBOC0(T1,N1)

#define DBOD1(T1,N1) T1 N1;
#define DBOC1(T1,N1) push(N1);

#define DBOD2(T1,N1,T2,N2) DBOD1(T1,N1)DBOD1(T2,N2)
#define DBOC2(T1,N1,T2,N2) DBOC1(T1,N1)DBOC1(T2,N2)

#define DBOD3(T1,N1,T2,N2,T3,N3) DBOD1(T1,N1)DBOD2(T2,N2,T3,N3)
#define DBOC3(T1,N1,T2,N2,T3,N3) DBOC1(T1,N1)DBOC2(T2,N2,T3,N3)

#define DBOD4(T1,N1,T2,N2,T3,N3,T4,N4) DBOD1(T1,N1)DBOD3(T2,N2,T3,N3,T4,N4)
#define DBOC4(T1,N1,T2,N2,T3,N3,T4,N4) DBOC1(T1,N1)DBOC3(T2,N2,T3,N3,T4,N4)

#define DBOD5(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5) DBOD1(T1,N1)DBOD4(T2,N2,T3,N3,T4,N4,T5,N5)
#define DBOC5(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5) DBOC1(T1,N1)DBOC4(T2,N2,T3,N3,T4,N4,T5,N5)

#define DBOD6(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6) DBOD1(T1,N1)DBOD5(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6)
#define DBOC6(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6) DBOC1(T1,N1)DBOC5(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6)

#define DBOD7(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7) DBOD1(T1,N1)DBOD6(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7)
#define DBOC7(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7) DBOC1(T1,N1)DBOC6(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7)

#define DBOD8(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8) DBOD1(T1,N1)DBOD7(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8)
#define DBOC8(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8) DBOC1(T1,N1)DBOC7(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8)

#define DBOD9(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9) \
    DBOD1(T1,N1)DBOD8(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9)
#define DBOC9(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9) \
    DBOC1(T1,N1)DBOC8(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9)

#define DBOD10(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10) \
    DBOD1(T1,N1)DBOD9(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10)
#define DBOC10(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10) \
    DBOC1(T1,N1)DBOC9(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10)

#define DBOD11(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11) \
    DBOD1(T1,N1)DBOD10(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11)
#define DBOC11(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11) \
    DBOC1(T1,N1)DBOC10(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11)

#define DBOD12(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12) \
    DBOD1(T1,N1)DBOD11(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12)
#define DBOC12(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12) \
    DBOC1(T1,N1)DBOC11(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12)

#define DBOD13(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13) \
    DBOD1(T1,N1)DBOD12(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13)
#define DBOC13(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13) \
    DBOC1(T1,N1)DBOC12(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13)

#define DBOD14(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14) \
    DBOD1(T1,N1)DBOD13(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14)
#define DBOC14(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14) \
    DBOC1(T1,N1)DBOC13(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14)

#define DBOD15(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15) \
    DBOD1(T1,N1)DBOD14(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15)
#define DBOC15(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15) \
    DBOC1(T1,N1)DBOC14(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15)

#define DBOD16(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16) \
    DBOD1(T1,N1)DBOD15(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16)
#define DBOC16(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16) \
    DBOC1(T1,N1)DBOC15(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16)

#define DBOD17(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17) \
    DBOD1(T1,N1)DBOD16(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17)
#define DBOC17(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17) \
    DBOC1(T1,N1)DBOC16(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17)

#define DBOD18(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18) \
    DBOD1(T1,N1)DBOD17(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18)
#define DBOC18(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18) \
    DBOC1(T1,N1)DBOC17(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18)

#define DBOD19(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19) \
    DBOD1(T1,N1)DBOD18(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19)
#define DBOC19(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19) \
    DBOC1(T1,N1)DBOC18(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19)

#define DBOD20(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20) \
    DBOD1(T1,N1)DBOD19(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20)
#define DBOC20(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20) \
    DBOC1(T1,N1)DBOC19(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20)

#define DBOD21(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21) \
    DBOD1(T1,N1)DBOD20(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21)
#define DBOC21(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21) \
    DBOC1(T1,N1)DBOC20(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21)

#define DBOD22(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22) \
    DBOD1(T1,N1)DBOD21(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22)
#define DBOC22(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22) \
    DBOC1(T1,N1)DBOC21(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22)

#define DBOD23(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23) \
    DBOD1(T1,N1)DBOD22(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23)
#define DBOC23(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23) \
    DBOC1(T1,N1)DBOC22(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23)

#define DBOD24(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24) \
    DBOD1(T1,N1)DBOD23(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23)
#define DBOC24(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24) \
    DBOC1(T1,N1)DBOC23(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24)

#define DBOD25(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25) \
    DBOD1(T1,N1)DBOD24(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25)
#define DBOC25(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25) \
    DBOC1(T1,N1)DBOC24(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25)

#define DBOD26(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26) \
    DBOD1(T1,N1)DBOD25(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26)
#define DBOC26(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26) \
    DBOC1(T1,N1)DBOC25(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26)

#define DBOD27(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27) \
    DBOD1(T1,N1)DBOD26(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26,T27,N27)
#define DBOC27(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27) \
    DBOC1(T1,N1)DBOC26(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26,T27,N27)

#define DBOD28(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28) \
    DBOD1(T1,N1)DBOD27(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26,T27,N27,T28,N28)
#define DBOC28(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28) \
    DBOC1(T1,N1)DBOC27(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26,T27,N27,T28,N28)

#define DBOD29(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29) \
    DBOD1(T1,N1)DBOD28(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29)
#define DBOC29(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29) \
    DBOC1(T1,N1)DBOC28(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29)

#define DBOD30(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30) \
    DBOD1(T1,N1)DBOD29(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30)
#define DBOC30(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30) \
    DBOC1(T1,N1)DBOC29(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30)

#define DBOD31(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31) \
    DBOD1(T1,N1)DBOD30(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31)
#define DBOC31(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31) \
    DBOC1(T1,N1)DBOC30(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31)

#define DBOD32(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32) \
    DBOD1(T1,N1)DBOD31(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32)
#define DBOC32(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32) \
    DBOC1(T1,N1)DBOC31(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32)

#define DBOD33(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33) \
    DBOD1(T1,N1)DBOD32(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33)
#define DBOC33(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33) \
    DBOC1(T1,N1)DBOC32(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33)

#define DBOD34(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34) \
    DBOD1(T1,N1)DBOD33(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34)
#define DBOC34(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34) \
    DBOC1(T1,N1)DBOC33(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34)

#define DBOD35(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35) \
    DBOD1(T1,N1)DBOD34(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35)
#define DBOC35(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35) \
    DBOC1(T1,N1)DBOC34(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35)

#define DBOD36(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36) \
    DBOD1(T1,N1)DBOD35(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36)
#define DBOC36(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36) \
    DBOC1(T1,N1)DBOC35(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36)

#define DBOD37(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37) \
    DBOD1(T1,N1)DBOD36(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37)
#define DBOC37(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37) \
    DBOC1(T1,N1)DBOC36(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37)

#define DBOD38(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37,T38,N38) \
    DBOD1(T1,N1)DBOD37(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37,T38,N38)
#define DBOC38(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37,T38,N38) \
    DBOC1(T1,N1)DBOC37(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37,T38,N38)

#define DBOD39(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37,T38,N38,T39,N39) \
    DBOD1(T1,N1)DBOD38(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37,T38,N38,T39,N39)
#define DBOC39(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37,T38,N38,T39,N39) \
    DBOC1(T1,N1)DBOC38(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37,T38,N38,T39,N39)

#define DBOD40(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37,T38,N38,T39,N39,T40,N40) \
    DBOD1(T1,N1)DBOD39(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N23,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37,T38,N38,T39,N39,T40,N40)
#define DBOC40(T1,N1,T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T24,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37,T38,N38,T39,N39,T40,N40) \
    DBOC1(T1,N1)DBOC39(T2,N2,T3,N3,T4,N4,T5,N5,T6,N6,T7,N7,T8,N8,T9,N9,T10,N10,T11,N11,T12,N12,T13,N13,T14,N14,T15,N15,T16,N16,T17,N17,T18,N18,T19,N19,T20,N20,T21,N21,T22,N22,T23,N23,T23,N24,T25,N25,T26,N26,T27,N27,T28,N28,T29,N29,T30,N30,T31,N31,T32,N32,T33,N33,T34,N34,T35,N35,T36,N36,T37,N37,T38,N38,T39,N39,T40,N40)

#define DBOOO(N,SZ,...) \
    DBOBEGIN(N) \
    DBOC##SZ(__VA_ARGS__) \
    DBOCEND() \
    DBOD##SZ(__VA_ARGS__) \
    DBOEND()

#define DBODEF(DBONAME,DBOFIELDCOUNT,...) DBOOO(DBONAME,DBOFIELDCOUNT,__VA_ARGS__)

} // namespace buf

#endif // DBOHELPER_H_

/* vim: set ai si nu sm smd hls is ts=4 sm=4 bs=indent,eol,start */

